{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Softmax Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A logistic regression class for multi-class classification tasks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.classifier import SoftmaxRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*Softmax Regression* (synonyms: *Multinomial Logistic*, *Maximum Entropy Classifier*, or just *Multi-class Logistic Regression*) is a generalization of logistic regression that we can use for multi-class classification (under the assumption that the classes are  mutually exclusive). In contrast, we use the (standard) *Logistic Regression* model in binary classification tasks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Below is a schematic of a *Logistic Regression* model, for more details, please see the [`LogisticRegression` manual](./LogisticRegression.md)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./SoftmaxRegression_files/logistic_regression_schematic.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In *Softmax Regression* (SMR), we replace the sigmoid logistic function by the so-called *softmax* function $\\phi_{softmax}(\\cdot)$.\n",
    "\n",
    "$$P(y=j \\mid z^{(i)}) = \\phi_{softmax}(z^{(i)}) = \\frac{e^{z^{(i)}}}{\\sum_{j=0}^{k} e^{z_{k}^{(i)}}},$$\n",
    "\n",
    "where we define the net input *z* as \n",
    "\n",
    "$$z = w_1x_1 + ... + w_mx_m  + b= \\sum_{l=1}^{m} w_l x_l + b= \\mathbf{w}^T\\mathbf{x} + b.$$ \n",
    "\n",
    "(**w** is the weight vector, $\\mathbf{x}$ is the feature vector of 1 training sample, and $b$ is the bias unit.)   \n",
    "Now, this softmax function computes the probability that this training sample $\\mathbf{x}^{(i)}$ belongs to class $j$ given the weight and net input $z^{(i)}$. So, we compute the probability $p(y = j \\mid \\mathbf{x^{(i)}; w}_j)$ for each class label in  $j = 1, \\ldots, k.$. Note the normalization term in the denominator which causes these class probabilities to sum up to one."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./SoftmaxRegression_files/softmax_schematic_1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To illustrate the concept of softmax, let us walk through a concrete example. Let's assume we have a training set consisting of 4 samples from 3 different classes (0, 1, and 2)\n",
    "\n",
    "- $x_0 \\rightarrow \\text{class }0$\n",
    "- $x_1 \\rightarrow \\text{class }1$\n",
    "- $x_2 \\rightarrow \\text{class }2$\n",
    "- $x_3 \\rightarrow \\text{class }2$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "y = np.array([0, 1, 2, 2])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we want to encode the class labels into a format that we can more easily work with; we apply one-hot encoding:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "one-hot encoding:\n",
      " [[ 1.  0.  0.]\n",
      " [ 0.  1.  0.]\n",
      " [ 0.  0.  1.]\n",
      " [ 0.  0.  1.]]\n"
     ]
    }
   ],
   "source": [
    "y_enc = (np.arange(np.max(y) + 1) == y[:, None]).astype(float)\n",
    "\n",
    "print('one-hot encoding:\\n', y_enc)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A sample that belongs to class 0 (the first row) has a 1 in the first cell, a sample that belongs to class 2 has a 1 in the second cell of its row, and so forth."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, let us define the feature matrix of our 4 training samples. Here, we assume that our dataset consists of 2 features; thus, we create a 4x2 dimensional matrix of our samples and features.\n",
    "Similarly, we create a 2x3 dimensional weight matrix (one row per feature and one column for each class)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Inputs X:\n",
      " [[ 0.1  0.5]\n",
      " [ 1.1  2.3]\n",
      " [-1.1 -2.3]\n",
      " [-1.5 -2.5]]\n",
      "\n",
      "Weights W:\n",
      " [[ 0.1  0.2  0.3]\n",
      " [ 0.1  0.2  0.3]]\n",
      "\n",
      "bias:\n",
      " [ 0.01  0.1   0.1 ]\n"
     ]
    }
   ],
   "source": [
    "X = np.array([[0.1, 0.5],\n",
    "              [1.1, 2.3],\n",
    "              [-1.1, -2.3],\n",
    "              [-1.5, -2.5]])\n",
    "\n",
    "W = np.array([[0.1, 0.2, 0.3],\n",
    "              [0.1, 0.2, 0.3]])\n",
    "\n",
    "bias = np.array([0.01, 0.1, 0.1])\n",
    "\n",
    "print('Inputs X:\\n', X)\n",
    "print('\\nWeights W:\\n', W)\n",
    "print('\\nbias:\\n', bias)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To compute the net input, we multiply the 4x2 matrix feature matrix `X` with the 2x3 (n_features x n_classes) weight matrix `W`, which yields a 4x3 output matrix (n_samples x n_classes) to which we then add the bias unit: \n",
    "\n",
    "$$\\mathbf{Z} = \\mathbf{X}\\mathbf{W} + \\mathbf{b}.$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Inputs X:\n",
      " [[ 0.1  0.5]\n",
      " [ 1.1  2.3]\n",
      " [-1.1 -2.3]\n",
      " [-1.5 -2.5]]\n",
      "\n",
      "Weights W:\n",
      " [[ 0.1  0.2  0.3]\n",
      " [ 0.1  0.2  0.3]]\n",
      "\n",
      "bias:\n",
      " [ 0.01  0.1   0.1 ]\n"
     ]
    }
   ],
   "source": [
    "X = np.array([[0.1, 0.5],\n",
    "              [1.1, 2.3],\n",
    "              [-1.1, -2.3],\n",
    "              [-1.5, -2.5]])\n",
    "\n",
    "W = np.array([[0.1, 0.2, 0.3],\n",
    "              [0.1, 0.2, 0.3]])\n",
    "\n",
    "bias = np.array([0.01, 0.1, 0.1])\n",
    "\n",
    "print('Inputs X:\\n', X)\n",
    "print('\\nWeights W:\\n', W)\n",
    "print('\\nbias:\\n', bias)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "net input:\n",
      " [[ 0.07  0.22  0.28]\n",
      " [ 0.35  0.78  1.12]\n",
      " [-0.33 -0.58 -0.92]\n",
      " [-0.39 -0.7  -1.1 ]]\n"
     ]
    }
   ],
   "source": [
    "def net_input(X, W, b):\n",
    "    return (X.dot(W) + b)\n",
    "\n",
    "net_in = net_input(X, W, bias)\n",
    "print('net input:\\n', net_in)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, it's time to compute the softmax activation that we discussed earlier:\n",
    "\n",
    "$$P(y=j \\mid z^{(i)}) = \\phi_{softmax}(z^{(i)}) = \\frac{e^{z^{(i)}}}{\\sum_{j=0}^{k} e^{z_{k}^{(i)}}}.$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "softmax:\n",
      " [[ 0.29450637  0.34216758  0.36332605]\n",
      " [ 0.21290077  0.32728332  0.45981591]\n",
      " [ 0.42860913  0.33380113  0.23758974]\n",
      " [ 0.44941979  0.32962558  0.22095463]]\n"
     ]
    }
   ],
   "source": [
    "def softmax(z):\n",
    "    return (np.exp(z.T) / np.sum(np.exp(z), axis=1)).T\n",
    "\n",
    "smax = softmax(net_in)\n",
    "print('softmax:\\n', smax)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see, the values for each sample (row) nicely sum up to 1 now. E.g., we can say that the first sample   \n",
    "`[ 0.29450637  0.34216758  0.36332605]` has a 29.45% probability to belong to class 0.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, in order to turn these probabilities back into class labels, we could simply take the argmax-index position of each row:\n",
    "\n",
    "[[ 0.29450637  0.34216758  **0.36332605**] -> 2   \n",
    "[ 0.21290077  0.32728332  **0.45981591**]  -> 2  \n",
    "[ **0.42860913**  0.33380113  0.23758974]  -> 0  \n",
    "[ **0.44941979**  0.32962558  0.22095463]] -> 0  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "predicted class labels:  [2 2 0 0]\n"
     ]
    }
   ],
   "source": [
    "def to_classlabel(z):\n",
    "    return z.argmax(axis=1)\n",
    "\n",
    "print('predicted class labels: ', to_classlabel(smax))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see, our predictions are terribly wrong, since the correct class labels are `[0, 1, 2, 2]`. Now, in order to train our logistic model (e.g., via an optimization algorithm such as gradient descent), we need to define a cost function $J(\\cdot)$ that we want to minimize:\n",
    "\n",
    "$$J(\\mathbf{W}; \\mathbf{b}) = \\frac{1}{n} \\sum_{i=1}^{n} H(T_i, O_i),$$\n",
    "\n",
    "which is the average of all cross-entropies over our $n$ training samples. The cross-entropy  function is defined as\n",
    "\n",
    "$$H(T_i, O_i) = -\\sum_m T_i \\cdot log(O_i).$$\n",
    "\n",
    "Here the $T$ stands for \"target\" (i.e., the *true* class labels) and the $O$ stands for output -- the computed *probability* via softmax; **not** the predicted class label."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Cross Entropy: [ 1.22245465  1.11692907  1.43720989  1.50979788]\n"
     ]
    }
   ],
   "source": [
    "def cross_entropy(output, y_target):\n",
    "    return - np.sum(np.log(output) * (y_target), axis=1)\n",
    "\n",
    "xent = cross_entropy(smax, y_enc)\n",
    "print('Cross Entropy:', xent)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Cost:  1.32159787159\n"
     ]
    }
   ],
   "source": [
    "def cost(output, y_target):\n",
    "    return np.mean(cross_entropy(output, y_target))\n",
    "\n",
    "J_cost = cost(smax, y_enc)\n",
    "print('Cost: ', J_cost)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In order to learn our softmax model -- determining the weight coefficients -- via gradient descent, we then need to compute the derivative \n",
    "\n",
    "$$\\nabla \\mathbf{w}_j \\, J(\\mathbf{W}; \\mathbf{b}).$$\n",
    "\n",
    "I don't want to walk through the tedious details here, but this cost derivative turns out to be simply:\n",
    "\n",
    "$$\\nabla \\mathbf{w}_j \\, J(\\mathbf{W}; \\mathbf{b}) = \\frac{1}{n} \\sum^{n}_{i=0} \\big[\\mathbf{x}^{(i)}\\ \\big(O_i - T_i \\big) \\big]$$\n",
    "\n",
    "We can then use the cost derivate to update the weights in opposite direction of the cost gradient with learning rate $\\eta$:\n",
    "\n",
    "$$\\mathbf{w}_j := \\mathbf{w}_j - \\eta \\nabla \\mathbf{w}_j \\, J(\\mathbf{W}; \\mathbf{b})$$ \n",
    "\n",
    "for each class $$j \\in \\{0, 1, ..., k\\}$$\n",
    "\n",
    "(note that $\\mathbf{w}_j$ is the weight vector for the class $y=j$), and we update the bias units\n",
    "\n",
    "\n",
    "$$\\mathbf{b}_j := \\mathbf{b}_j   - \\eta \\bigg[ \\frac{1}{n} \\sum^{n}_{i=0} \\big(O_i - T_i  \\big) \\bigg].$$ \n",
    " \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a penalty against complexity, an approach to reduce the variance of our model and decrease the degree of overfitting by adding additional bias, we can further add a regularization term such as the L2 term with the regularization parameter $\\lambda$:\n",
    "    \n",
    "L2:        $\\frac{\\lambda}{2} ||\\mathbf{w}||_{2}^{2}$, \n",
    "\n",
    "where \n",
    "\n",
    "$$||\\mathbf{w}||_{2}^{2} = \\sum^{m}_{l=0} \\sum^{k}_{j=0} w_{i, j}$$\n",
    "\n",
    "so that our cost function becomes\n",
    "\n",
    "$$J(\\mathbf{W}; \\mathbf{b}) = \\frac{1}{n} \\sum_{i=1}^{n} H(T_i, O_i) + \\frac{\\lambda}{2} ||\\mathbf{w}||_{2}^{2}$$\n",
    "\n",
    "and we define the \"regularized\" weight update as\n",
    "\n",
    "$$\\mathbf{w}_j := \\mathbf{w}_j -  \\eta \\big[\\nabla \\mathbf{w}_j \\, J(\\mathbf{W}) + \\lambda \\mathbf{w}_j \\big].$$\n",
    "\n",
    "(Please note that we don't regularize the bias term.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - Gradient Descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 500/500 | Cost 0.06 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10601fd30>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAisAAAF5CAYAAABeAGpJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XmYXVWZ7/Hvm3kiYU4AQxglAVpICmwjCN2ABuwGry2K\n5cSVFiecgui1tQGvtuJ1IKBAC3oVuEq1KDaDU5BBbSGRNgVBSKBlCEEhIcGYAEmAJOv+sc7pnJSn\nKjWcU3tX1ffzPPs5dfZee5337OSp/LLWHiKlhCRJUlkNK7oASZKkrhhWJElSqRlWJElSqRlWJElS\nqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqZUmrETEWRHxaERsiIiFEXFkF22P\niohfR8TqiFgfEUsj4iMd2pweEVsiYnPldUtErG/+N5EkSY00ougCACLiNOArwLuBu4C5wPyIeGlK\naXWdXZ4DvgbcW/n5aOCKiHg2pfTNmnZrgZcCUXnvg5AkSRpgogwPMoyIhcBvUkofrrwP4HHgqyml\nL3azj+uAZ1NKp1fenw7MSynt3KSyJUlSPyh8GigiRgItwK3VdSknqFuA2d3sY2al7S86bJoQEcsi\nYnlEXB8RBzemakmS1F8KDyvArsBwYGWH9SuBKV3tGBGPR8RG8tTRpSmlb9dsfhA4AzgFeCv5u94Z\nEXs2qnBJktR8pThnpQ+OBiYArwD+T0Q8lFL6HkBKaSGwsNowIhYAS4H3AOfX6ywidgHmAMuAjU2t\nXJKkwWUMsA8wP6X0dCM7LkNYWQ1sBiZ3WD8ZWNHVjimlxyo/3h8RU4BPA9/rpO2miLgbOKCLLucA\n3+1GzZIkqb63Atc0ssPCw0pK6cWIWAQcD9wI/32C7fHAV3vQ1XBgdGcbI2IY8FfAj7voYxnAd77z\nHWbMmNGDj1ZfzJ07l3nz5hVdxpDiMe9/HvP+5zHvX0uXLuVtb3sbVP4tbaTCw0rFhcCVldBSvXR5\nHHAlQERcAOxZc6XP+4HlwAOV/Y8FPgpcVO0wIs4lTwM9BOwIfBzYG6i9tLmjjQAzZsxg1qxZDfpq\n2p5JkyZ5vPuZx7z/ecz7n8e8MA0/jaIUYSWldG1E7Ap8hjz9cw8wJ6W0qtJkCjC1ZpdhwAXkubFN\nwMPAx1JKV9S02Qm4orLvGmARMDul9ACSJGnAKEVYAUgpXQZc1sm2d3Z4fwlwyXb6Oxs4u2EFSpKk\nQpTh0mVJkqROGVZUuNbW1qJLGHI85v3PY97/POaDRylut18WETELWLRo0SJPypIkqQfa29tpaWkB\naEkptTeyb0dWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlW\nJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElS\nqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlW\nJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElSqRlWJElS\nqRlWJElSqZUmrETEWRHxaERsiIiFEXFkF22PiohfR8TqiFgfEUsj4iN12r2xsm1DRCyOiJOa+y0k\nSVKjlSKsRMRpwFeA84GZwGJgfkTs2skuzwFfA14FTAc+C/xLRLyrps9XAtcA3wAOB24Aro+Ig5v1\nPSRJUuOVIqwAc4HLU0pXp5QeAN4LrAfOqNc4pXRPSul7KaWlKaXlKaVrgPnk8FL1IeCnKaULU0oP\nppTOA9qBDzT3q0iSpEYqPKxExEigBbi1ui6llIBbgNnd7GNmpe0valbPrvRRa353+5QkSeUwougC\ngF2B4cDKDutXAgd1tWNEPA7sVtn/0ymlb9dsntJJn1P6VK0kSepXZQgrfXE0MAF4BfB/IuKhlNL3\n+trp3LlzmTRp0jbrWltbaW1t7WvXkiQNeG1tbbS1tW2zbu3atU37vDKEldXAZmByh/WTgRVd7ZhS\neqzy4/0RMQX4NFANKyt60yfAvHnzmDVr1vaaSZI0JNX7D3x7ezstLS1N+bzCz1lJKb0ILAKOr66L\niKi8v7MHXQ0HRte8X1DbZ8WrK+slSdIAUYaRFYALgSsjYhFwF/nqoHHAlQARcQGwZ0rp9Mr79wPL\ngQcq+x8LfBS4qKbPi4FfRMTZwI+BVvKJvGc2+8tIkqTGKUVYSSldW7mnymfIUzX3AHNSSqsqTaYA\nU2t2GQZcAOwDbAIeBj6WUrqips8FEfEW4HOV5ffA61JKS5r8dSRJUgOVIqwApJQuAy7rZNs7O7y/\nBLikG31eB1zXkAIlSVIhCj9nRZIkqSuGFUmSVGqGFUmSVGqGFUmSVGqGFUmSVGqGFUmSVGqGFUmS\n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\nRTKsaMjYYQc46qi8VKUETz6Zg8uSJXD//fn1Zz+DNWtym+HDYdo0OPDArcsBB+TXffbxfjCS1GyG\nFQ1pEflsOOOgAAAOa0lEQVT5RXvumS+NrkopP+doyRL4/e+3LrfdBt/4Bjz/fG43fHgeeamGl333\nzQGmuuy4Y/4MSVLvGVakOiJgypS81J4LA7B5M/zhDzm8PPTQ1iDz85/DsmWwcePWthMn5lGZ2gCz\nzz5b1+28s2FGkrbHsCL1UHVaaNq0bUdjII/IrFqVQ0t1eeyx/Hrrrfl1/fqt7ceOhb32ynfv3Wuv\n+j9Pnpwv4ZakocpfgVIDReSTe3ffPd/zpaOU4OmntwaZP/wB/vjH/Lp8OSxYkH+ufbzAsGF5hKca\nYvbYIweYKVO2fZ08OYcfSRpsDCtSP4qAXXfNyxFH1G9TDTTVIFMNM9XXX/86n0+zalW+SV6tiRP/\nMsTUhpnddtv6+ZMmOQUlaWAwrEglUxtoDj+883abN+dnKa1YkcPLypVbf66+Ll2aX1evziGo1ogR\nsMsuWz+rO8v48QYcSf3PsCINUMOHbx0x2Z5Nm/JIzOrVnS/V6anq++ee+8t+Ro3KT8SuLjvuuO37\neuuq73fYwaAjqXcMK9IQMGJEPtdljz26v8+GDTnAdAw1a9bAn/+cX9esydNT9923dX1nT8QePnxr\ncNlxx7xMnLjtMmnSX66rXXbYwfvaSEORYUVSXWPH5pN6X/KSnu23adO2Yab259pl3bp89+Ann8w/\n1y4dp6w61tVZuNlhB5gwIS/jx//lz/XWjR7tiI9UdoYVSQ01YsTWc1x6I6U8BdUxwHRc1q7d9v0j\nj+TX556DZ5/d+ro9w4d3HWY6hp1x4/Iydmz3XseM8cnfUl8ZViSVSsTWkLDnnn3ra8uWPJ1VDS61\nIabeuo7b162DJ57YdvuGDfleOZs2db+OMWO6H25qX8eOzftWl9GjO3/fcdvIkY4YafAwrEgatIYN\ny6Mh48fne9800osv5uBSDS/be+1q27p1+Qquevs8/3z+rN7oTcjpuG306HxidfW1s2V726uLAUq9\nYViRpF4YOTIvEyc2/7O2bMmhZePGvPTl53rb/vzn+us3bMg3KKwuPRlN6szIkX0PPaNHbz3+I0Zs\n/bmv67rTxim9YhhWJKnkhg3bOi1UpC1b8ihPNbw8//y2Yabe0p0222v3zDP127z4Yg5QL7647VJd\n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\nqV3mHBrbIQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10601a668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "from mlxtend.classifier import SoftmaxRegression\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "lr = SoftmaxRegression(eta=0.01, \n",
    "                       epochs=500, \n",
    "                       minibatches=1, \n",
    "                       random_seed=1,\n",
    "                       print_progress=3)\n",
    "lr.fit(X, y)\n",
    "\n",
    "plot_decision_regions(X, y, clf=lr)\n",
    "plt.title('Softmax Regression - Gradient Descent')\n",
    "plt.show()\n",
    "\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "#### Predicting Class Labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Last 3 Class Labels: [2 2 2]\n"
     ]
    }
   ],
   "source": [
    "y_pred = lr.predict(X)\n",
    "print('Last 3 Class Labels: %s' % y_pred[-3:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Predicting Class Probabilities"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Last 3 Class Labels:\n",
      " [[  9.18728149e-09   1.68894679e-02   9.83110523e-01]\n",
      " [  2.97052325e-11   7.26356627e-04   9.99273643e-01]\n",
      " [  1.57464093e-06   1.57779528e-01   8.42218897e-01]]\n"
     ]
    }
   ],
   "source": [
    "y_pred = lr.predict_proba(X)\n",
    "print('Last 3 Class Labels:\\n %s' % y_pred[-3:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Stochastic Gradient Descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n90A2UYwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x104703dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAisAAAF5CAYAAABeAGpJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XuYHVWZ9/3vnXBIIBCQQGIgiBKOokAa8QFUFBgQGWEQ\nHW1wRHh1ZEDBMKMzHvHwODzqgILICDiKiDQwMh5RgyDqKAmMHU5CQEECCBKIYjgkkZDc7x9r92Sn\n2d3p7uzuqk5/P9dV1+69alX1vYtN8suqWlWRmUiSJNXVuKoLkCRJ6o9hRZIk1ZphRZIk1ZphRZIk\n1ZphRZIk1ZphRZIk1ZphRZIk1ZphRZIk1ZphRZIk1ZphRZIk1VptwkpEnBIR90XEsoiYFxEvG+B2\nB0TEioiY32LdmyJiQWOft0bE4e2vXJIkDadahJWIeDNwFnAGsDdwKzAnIqasZbvJwNeAa1us2x+4\nDLgI2Av4DvDtiNi9vdVLkqThFHV4kGFEzANuzMzTGu8DeBA4NzM/0892XcBvgFXAUZk5q2nd5cAm\nmXlkU9tc4ObMPHl4PokkSWq3ykdWImJDoAO4rqctS4K6Ftivn+1OAF4IfLyPLvvx3BGXOf3tU5Ik\n1c8GVRcATAHGA4t6tS8Cdmm1QUTsBPwr8IrMXFUGYp5jWh/7nLZO1UqSpBFVh7AyKBExDvgGcEZm\n3tvT3KZ9bwUcBiwElrdjn5IkjRETgB2AOZn5x3buuA5hZTGwEpjaq30q8EiL/psB+wB7RcQXG23j\nKJe6PAMcmpk/bWw70H32OIwShCRJ0tAcR5ng0jaVh5XMXBER3cDBwHfhfy+wPRg4t8UmTwB79Go7\nBXgNcAxlVARgbot9/FWjvS8LAS699FJ22223wXyMMW327Nl87nOfq7qMUcfjNnges6HxuA2ex2zw\nFixYwFvf+lZY/fdw21QeVhrOBi5uhJabgNnAJsDFABFxJjA9M49vXHx7Z/PGEfEosDwzFzQ1nwP8\nNCJOB64GOikX8r6znzqWA+y2227MmjWrn25qNnnyZI/XEHjcBs9jNjQet8HzmK2Ttl9GUYuwkplX\nNu6p8gnKqZpbgMMy87FGl2nAjEHuc25EHAt8qrH8ljK9+c7+t5QkSXVSi7ACkJnnA+f3se6EtWz7\ncVpMYc7Mq4Cr2lKgJEmqROX3WZEkSeqPYUXrrLOzs+oSRiWP2+B5zIbG4zZ4HrN6qcXt9usiImYB\n3d3d3V5YJUnSIMyfP5+Ojg6Ajsx8zsOF14UjK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYM\nK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5Ik\nqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYM\nK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdYMK5IkqdZqE1Yi4pSIuC8ilkXEvIh4WT99D4iI\nX0TE4ohYGhELIuK9vfocHxGrImJl43VVRCwd/k8iSZLaaYOqCwCIiDcDZwF/D9wEzAbmRMTOmbm4\nxSZPA18Abmv8/Argwoh4KjO/3NRvCbAzEI33OUwfQZIkDZO6jKzMBi7IzEsy8y7gJGApcGKrzpl5\nS2ZekZkLMvOBzLwMmAO88rld87HMfLSxPDasn0KSJLVd5WElIjYEOoDretoyM4Frgf0GuI+9G31/\n2mvVpIhYGBEPRMS3I2L39lQtSZJGSuVhBZgCjAcW9WpfBEzrb8OIeDAillNOHX0xM7/atPpuysjM\nkcBxlM96Q0RMb1fhkiRp+NXimpV18ApgEvB/gE9HxD2ZeQVAZs4D5vV0jIi5wALgXcAZFdQqSZKG\noA5hZTGwEpjaq30q8Eh/G2bm/Y0f74iIacDHgCv66PtsRNwMzFxbQbNnz2by5MlrtHV2dtLZ2bm2\nTSVJWu91dXXR1dW1RtuSJUuG7fdFuTykWhExD7gxM09rvA/gAeDczPzsAPfxUeDtmfmiPtaPA+4A\nrs7Mf+qjzyygu7u7m1mzZg3hk0iSNDbNnz+fjo4OgI7MnN/OfddhZAXgbODiiOhm9dTlTYCLASLi\nTGB6Zh7feH8yJczc1dj+QOAfgc/37DAiPkI5DXQPsAXwfmB7oHlqsyRJqrlahJXMvDIipgCfoJz+\nuQU4rGmq8TRgRtMm44AzgR2AZ4F7gfdl5oVNfbYELmxs+zjQDezXmBotSZJGiVqEFYDMPB84v491\nJ/R6fx5w3lr2dzpwetsKlCRJlajD1GVJkqQ+GVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKt\nGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVZaqMGDqCVJUoNhpYVnnqm6AkmS1MOw0oJhRZKk+jCs\ntPCXv1RdgSRJ6mFYacGRFUmS6sOw0oIjK5Ik1YdhpQVHViRJqg/DSguGFUmS6sOw0oKngSRJqg/D\nSguOrEiSVB+GlRYMK5Ik1YdhpQXDiiRJ9WFYacFrViRJqg/DSguOrEiSVB+GlRYcWZEkqT4MKy04\nsiJJUn0YVlpwZEWSpPowrLTgyIokSfVhWGnBsCJJUn0YVlowrEiSVB+GlRa8ZkWSpPowrLTgyIok\nSfVhWGnBsCJJUn0YVlrwNJAkSfVRm7ASEadExH0RsSwi5kXEy/rpe0BE/CIiFkfE0ohYEBHvbdHv\nTY11yyLi1og4fCC1LF++Lp9EkiS1Uy3CSkS8GTgLOAPYG7gVmBMRU/rY5GngC8ArgV2BTwL/NyLe\n0bTP/YHLgIuAvYDvAN+OiN3XVs/TTw/9s0iSpPaqRVgBZgMXZOYlmXkXcBKwFDixVefMvCUzr8jM\nBZn5QGZeBsyhhJcepwI/zMyzM/PuzPwoMB9499qKeeqpdf04kiSpXSoPKxGxIdABXNfTlpkJXAvs\nN8B97N3o+9Om5v0a+2g2ZyD7NKxIklQfG1RdADAFGA8s6tW+CNilvw0j4kFg68b2H8vMrzatntbH\nPqetraAnn4RMiFhbT0mSNNzqEFbWxSuAScD/AT4dEfdk5hXrutNVq2bz1389mfHjV7d1dnbS2dm5\nrruWJGnU6+rqoqura422JUuWDNvvq0NYWQysBKb2ap8KPNLfhpl5f+PHOyJiGvAxoCesPDKUfRaf\n46KLZjF9+tp7SpI01rT6B/z8+fPp6OgYlt9X+TUrmbkC6AYO7mmLiGi8v2EQuxoPbNz0fm7zPhv+\nqtG+VsMYECVJ0iDUYWQF4Gzg4ojoBm6izA7aBLgYICLOBKZn5vGN9ycDDwB3NbY/EPhH4PNN+zwH\n+GlEnA5cDXRSLuR950AKMqxIklQPtQgrmXll454qn6CcqrkFOCwzH2t0mQbMaNpkHHAmsAPwLHAv\n8L7MvLBpn3Mj4ljgU43lt8BRmXnnQGoyrEiSVA+1CCsAmXk+cH4f607o9f484LwB7PMq4Kqh1PPn\nPw9lK0mS1G6VX7NSV46sSJJUD4aVFiZNMqxIklQXhpUWDCuSJNWHYaUFw4okSfVhWGlh0iQvsJUk\nqS4MKy1stpkjK5Ik1YVhpQVPA0mSVB+GlRYMK5Ik1YdhpQXDiiRJ9WFYacELbCVJqg/DSguTJsET\nT0Bm1ZVIkiTDSgubbQarVsFTT1VdiSRJMqy0MGlSefW6FUmSqmdYacGwIklSfRhWWjCsSJJUH4aV\nFjbbrLw+/ni1dUiSJMNKS1tsUV4XL662DkmSZFhpaaONYPJkePTRqiuRJEmGlT5ss41hRZKkOjCs\n9GGbbWDRoqqrkCRJhpU+OLIiSVI9GFb6MHWqYUWSpDowrPTBkRVJkurBsNKHnrDiwwwlSaqWYaUP\n22wDK1bAn/9cdSWSJI1thpU+bLNNefVUkCRJ1TKs9GHq1PJqWJEkqVqGlT44siJJUj0YVvqwxRaw\nwQaGFUmSqmZY6cO4cbD11t7FVpKkqhlW+uGN4SRJqp5hpR/eGE6SpOoZVvphWJEkqXq1CSsRcUpE\n3BcRyyJiXkS8rJ++R0fENRHxaEQsiYgbIuLQXn2Oj4hVEbGy8boqIpYOpqapU+GRR4b6iSRJUjvU\nIqxExJuBs4AzgL2BW4E5ETGlj01eBVwDHA7MAq4HvhcRe/bqtwSY1rS8YDB1bbcdPPigt9yXJKlK\nG1RdQMNs4ILMvAQgIk4CjgBOBD7Tu3Nmzu7V9KGIOAp4PSXoNHXNx4Za1IwZsHw5/PGPMKWv2CRJ\nkoZV5SMrEbEh0AFc19OWmQlcC+w3wH0EsBnwp16rJkXEwoh4ICK+HRG7D6a27bcvrw8+OJitJElS\nO1UeVoApwHig9x1NFlFO3QzE+4BNgSub2u6mjMwcCRxH+aw3RMT0gRY2Y0Z5feCBgW4hSZLarS6n\ngYYsIo4FPgIcmZmLe9ozcx4wr6nfXGAB8C7KtTF9mj17NpMnTyYTIuDDH4alSzvp7Owcng8hSdIo\n0tXVRVdX1xptS5YsGbbfF1nx1aON00BLgWMy87tN7RcDkzPz6H62fQvwZeCNmfmjAfyuK4EVmXlc\nH+tnAd3d3d3MmjULgB13hDe+ET796UF8KEmSxpj58+fT0dEB0JGZ89u578pPA2XmCqAbOLinrXEN\nysHADX1tFxGdwH8AbxlgUBkHvAT4w2DqmzHD00CSJFWpLqeBzgYujohu4CbK7KBNgIsBIuJMYHpm\nHt94f2xj3anA/0TE1MZ+lmXmE40+H6GcBroH2AJ4P7A9ZSRmwGbMgPvuW5ePJkmS1kXlIysAmXkl\n8E/AJ4CbgZcChzVNO54GzGja5J2Ui3K/CDzctHy+qc+WwIXAncDVwCRgv8y8azC1bb+9s4EkSapS\nXUZWyMzzgfP7WHdCr/evGcD+TgdOX9e6ZsyAhx6ClSth/Ph13ZskSRqsWoys1NmMGSWo/GFQV7pI\nkqR2MayshTeGkySpWoaVtfDGcJIkVWtIYSUiPhoRm7RonxgRH133supj8uSyOCNIkqRqDHVk5QzK\n7JreNmEtd4cdbSJg5ky4556qK5EkaWwaalgJoNWtb/fkuQ8THPV22smwIklSVQY1dTkiHqeElAR+\nExHNgWU8ZbTlS+0rrx5mzoSf/7zqKiRJGpsGe5+V91JGVb5COd3T/NSiZ4CFmTm3TbXVxsyZ8PDD\n8PTTsOmmVVcjSdLYMqiwkplfA4iI+4BfZuazw1JVzcycWV5/9zt4yUuqrUWSpLFmqNesPAns1vMm\nIo6KiG9HxL9GxEbtKa0+dtqpvP72t9XWIUnSWDTUsHIBsDNARLwIuAJYCrwJ+Ex7SquPrbeGzTbz\nIltJkqow1LCyM3BL4+c3AT/LzGOBtwPHtKGuWnH6siRJ1VmXqcs92x4C/KDx84PAlHUtqo522snT\nQJIkVWGoYeVXwIcj4u+AA4GrG+0vBBa1o7C6mTnTsCJJUhWGGlbeC8wCzgM+lZk9J0jeCNzQjsLq\nZpdd4KGH4Mknq65EkqSxZbD3WQEgM28DWk3ifR+wcp0qqqk99iivd94JL395tbVIkjSWDCms9IiI\nDlZPYb4zM+eve0n1tOuu5ULbX//asCJJ0kgaUliJiG0o05UPBP7caN4iIq4H3pKZj7WpvtrYZBPY\ncUe4446qK5EkaWwZ6jUrX6A8B+jFmfm8zHwesAewOXBuu4qrmxe/uIysSJKkkTPUsPJa4OTMXNDT\nkJl3AqcAh7ejsDraYw9HViRJGmlDDSvjgBUt2leswz5r78UvLg80fPzxqiuRJGnsGGqw+AlwTkRM\n72mIiG2BzwHXtaOwOuqZEeToiiRJI2eoYeXdlOtTFkbEvRFxL3Bfo+097SqubnbeGcaP97oVSZJG\n0lDvs/JgRMyi3Gp/10bzgsy8tm2V1dDGG5cpzLfeWnUlkiSNHYMaWYmIgyLizojYPIsfZ+YXMvML\nwP9ExB0Rcdgw1VoLs2ZBd3fVVUiSNHYM9jTQe4GLMvOJ3isycwlwAevxaSCAjg647TZY0eryYkmS\n1HaDDSt7Aj/qZ/01wEuHXk79dXTAX/5SbrsvSZKG32DDylRaT1nu8Syw9dDLqb+99iq33fdUkCRJ\nI2OwYeUhyp1q+/JS4A9DL6f+Jk0qT2A2rEiSNDIGG1Z+AHwyIib0XhERE4GPA99vR2F11tFhWJEk\naaQMdury/wXeAPwmIs4D7m6070q51f544FPtK6+eOjrgqqvKRbYbblh1NZIkrd8GFVYyc1FE7A/8\nO3AmED2rgDnAKZm5qL0l1s+++8Ly5XD77WUqsyRJGj6DvilcZt4PvC4itgRmUgLLbzNzzDwxp6MD\nNtoIbrjBsCJJ0nAb8kMHM/PxzPyfzLypHUElIk6JiPsiYllEzIuIl/XT9+iIuCYiHo2IJRFxQ0Qc\n2qLfmyJiQWOft0ZEW54IPWFCCSw33NCOvUmSpP7U4gnJEfFm4CzgDGBv4FZgTkRM6WOTV1Hu6XI4\nMAu4HvheROzZtM/9gcuAi4C9gO8A346I3dtR8/77G1YkSRoJtQgrwGzggsy8JDPvAk4ClgIntuqc\nmbMz898yszsz783MDwG/BV7f1O1U4IeZeXZm3p2ZHwXmUx7CuM723x/uvx8eeqgde5MkSX2pPKxE\nxIZAB3BdT1tmJnAtsN8A9xHAZsCfmpr3a+yj2ZyB7nNt9mvsZe7cduxNkiT1pfKwAkyhTHnuPYto\nETBtgPt4H7ApcGVT27R13Ge/nv98eOEL4Ze/bMfeJElSXwY9G6huIuJY4CPAkZm5eCR/94EHwk9/\nOpK/UZKksacOYWUxsJLy3KFmU4FH+tswIt4CXAi8MTOv77X6kaHsE2D27NlMnjx5jbbOzk46OzvX\naHvNa+Dii+GPf4SttlrbXiVJWj90dXXR1dW1RtuSJUuG7fdFuTykWhExD7gxM09rvA/gAeDczPxs\nH9t0Al8G3pyZz7nFf0RcDkzMzKOa2n4J3JqZJ/exz1lAd3d3N7MGcAOVBx+E7beHb34Tjjlmrd0l\nSVpvzZ8/n46ODoCOzJzfzn3X4ZoVgLOBd0bE2yJiV+BLwCbAxQARcWZEfK2nc+PUz9eAfwT+JyKm\nNpbNm/Z5DvDaiDg9InaJiI9RLuQ9r11Fz5gBM2fC9b3HdCRJUtvUIqxk5pXAPwGfAG6mPL35sMx8\nrNFlGjCjaZN3Ui7K/SLwcNPy+aZ9zgWOBf4euIXyTKOjMvPOdtZ+0EHwk5+0c4+SJKlZHa5ZASAz\nzwfO72PdCb3ev2aA+7wKuGrdq+vbQQfBhRfCww/D9OnD+ZskSRqbajGyMpodfDBEwJw5VVciSdL6\nybCyjqZMKU9h/uEPq65EkqT1k2GlDQ4/HK65Bp59tupKJEla/xhW2uB1r4MlS7z1viRJw8Gw0gYd\nHbD11vCDH1RdiSRJ6x/DShuMG1dOBX3ve1VXIknS+sew0iZHHw133AG/+U3VlUiStH4xrLTJoYfC\nxInwrW9VXYkkSesXw0qbbLJJORVkWJEkqb0MK2109NFw443w+99XXYkkSesPw0ob/fVfw0YbwX/+\nZ9WVSJK0/jCstNEWW8ARR8Bll1VdiSRJ6w/DSpsdeyz86lfOCpIkqV0MK212xBGw2WbQ1VV1JZIk\nrR8MK202cSK84Q1w6aWQWXU1kiSNfoaVYfD2t8M998AvflF1JZIkjX6GlWHwqlfBi14EX/lK1ZVI\nkjT6GVaGwbhxcMIJZQrzk09WXY0kSaObYWWYHH88LF3qNGZJktaVYWWYzJgBRx0FX/iCF9pKkrQu\nDCvD6LTTypOYr7uu6kokSRq9DCvD6MAD4aUvhXPOqboSSZJGL8PKMIoooytXX12mMkuSpMEzrAyz\nY4+FrbYq165IkqTBM6wMswkT4F3vKvdcWbKk6mokSRp9DCsj4OSTYflyuOiiqiuRJGn0MayMgOnT\ny31XPvtZePrpqquRJGl0MayMkA9/GP70Jzj//KorkSRpdDGsjJAddoATT4TPfAaeeqrqaiRJGj0M\nKyPoQx8qF9med17VlUiSNHoYVkbQ9tvDO95Rrl3xAYeSJA2MYWWEffCD5TTQ5z9fdSWSJI0OhpUR\ntt128O53w//7f/DQQ1VXI0lS/dUmrETEKRFxX0Qsi4h5EfGyfvpOi4hvRMTdEbEyIs5u0ef4iFjV\nWL+qsSwd3k8xMB/5CGy6KXzgA1VXIklS/dUirETEm4GzgDOAvYFbgTkRMaWPTTYGHgU+CdzSz66X\nANOalhe0q+Z1scUW8KlPwde/DvPmVV2NJEn1VouwAswGLsjMSzLzLuAkYClwYqvOmXl/Zs7OzEuB\nJ/rZb2bmY5n5aGN5rP2lD82JJ8Jee8F73wurVlVdjSRJ9VV5WImIDYEO4LqetsxM4Fpgv3Xc/aSI\nWBgRD0TEtyNi93XcX9uMHw/nnAM33giXXlp1NZIk1VflYQWYAowHFvVqX0Q5dTNUd1NGZo4EjqN8\n1hsiYvo67LOtXvUqePOb4R//ER6rzZiPJEn1UoewMiwyc15mXpqZt2XmfwNvAB4D3lVxaWs455xy\nGui006quRJKketqg6gKAxcBKYGqv9qnAI+36JZn5bETcDMxcW9/Zs2czefLkNdo6Ozvp7OxsVzn/\na+pUOPdceOtbyyjLUUe1/VdIktRWXV1ddHV1rdG2ZMmSYft9US4PqVZEzANuzMzTGu8DeAA4NzM/\nu5ZtrwduzszT19JvHHAHcHVm/lMffWYB3d3d3cyaNWsIn2RoMuH1r4f58+HOO8tsIUmSRpP58+fT\n0dEB0JGZ89u577qcBjobeGdEvC0idgW+BGwCXAwQEWdGxNeaN4iIPSNiL2ASsHXj/W5N6z8SEX8V\nES+MiL2BbwDbA18emY80cBHwpS/B00+X2UGSJGm1OpwGIjOvbNxT5ROU0z+3AIc1TTWeBszotdnN\nQM+w0CzgWOB+4EWNti2BCxvbPg50A/s1pkbXznbbldNBb387HHooHHts1RVJklQPtQgrAJl5PnB+\nH+tOaNHW76hQ47RQv6eG6uZtb4Mf/xhOOgn23RdmrvXqGkmS1n91OQ0kyumgf/932GYb6OyEZ56p\nuiJJkqpnWKmZzTaDyy+HW2+Ff/mXqquRJKl6hpUa2mcf+Oxn4XOfg298o+pqJEmqVm2uWdGaTj21\nTGV+xztg553hZX0+g1qSpPWbIys1FQEXXAB77gl/8zfwhz9UXZEkSdUwrNTYhAnwrW+Vn//mb2Dp\n0mrrkSSpCoaVmnv+8+E734E77oC//VtYsaLqiiRJGlmGlVFgn33gqqtgzhx417vK7fklSRorDCuj\nxGGHwcUXw1e/Ch/8YNXVSJI0cpwNNIocdxw8+iicfjpMnAgf/WjVFUmSNPwMK6PM7NmwbBl86EPl\nvYFFkrS+M6yMQj2ngQwskqSxwLAySn3wg+VC2w9/GJ56Cj796XJvFkmS1jeGlVHsQx8qzxI67bRy\nLctFF8GGG1ZdlSRJ7WVYGeVOPRWmTIHjj4fFi+GKK2DTTauuSpKk9nHq8nrg2GPh+9+Hn/4UXvUq\neOihqiuSJKl9DCvricMOg1/8opwO2ndf6O6uuiJJktrDsLIe2WsvuOkm2HZbeOUroaur6ookSVp3\nhpX1zPOfDz/7GRxzTDk99A//AMuXV12VJElDZ1hZD02cCJdcAhdcUG7Pf8AB8LvfVV2VJElDY1hZ\nT0XA3/89zJ0LS5bArFnwrW9VXZUkSYNnWFnP7b13udj2kEPgDW+AE04o4UWSpNHCsDIGTJ4M//mf\n8B//AVddBXvsAddcU3VVkiQNjGFljIiAE0+EX/8adt21THU+6SR48smqK5MkqX+GlTFm++3LqMr5\n58Oll8Luu8N//Vd5zpAkSXVkWBmDIsqU5l//utyb5Zhj4Igj4N57q65MkqTnMqyMYTvsAN/7Hnzn\nO3DHHfDiF8PHPw7LllVdmSRJqxlWxJFHwp13wumnw6c+BbvsUu7TsmpV1ZVJkmRYUcOmm8K//msZ\nYXn5y8tTnGfNgh//uOrKJEljnWFFa9hppzLN+YYbYNIkOPTQssydW3VlkqSxyrCilvbbD/77v8tM\noYcegv33L9Odb7ih6sokSWONYUV9ioCjj4bbb4crryyh5YADykjLz37mdGdJ0sgwrGitxo2DN70J\nbrutnCL6wx/g1a+GffeFyy+HZ5+tukJJ0vrMsKIBGzcO3vjGElp++MNyG//OTthxRzj7bHjiiaor\nlCStj2oTViLilIi4LyKWRcS8iHhZP32nRcQ3IuLuiFgZEWf30e9NEbGgsc9bI+Lw4fsEY0cEvPa1\ncO21cPPNcOCB8M//DDNmlOnPd91VdYWSpPVJLcJKRLwZOAs4A9gbuBWYExFT+thkY+BR4JPALX3s\nc3/gMuAiYC/gO8C3I2L39lY/tu21V7kny8KFcPLJ8PWvw267lQBz2WWwfHnVFUqSRrtahBVgNnBB\nZl6SmXcBJwFLgRNbdc7M+zNzdmZeCvR18uFU4IeZeXZm3p2ZHwXmA+8ehvrHvG23hTPPhN//Hrq6\nYPx4OO640n766bBgQdUVSpJGq8rDSkRsCHQA1/W0ZWYC1wL7rcOu92vso9mcddyn1mLjjeEtb4Gf\n/ATuvrs86fnrXy8PTHzZy+Ccc2DRoqqrlCSNJpWHFWAKMB7o/VfYImDaOux32jDsU4Ow887w2c+W\n0ZZvfhO22w7e9z6YPr1c83LppfDUU1VXKUmquw2qLqCOZs+ezeTJk9do6+zspLOzs6KKRreNNy5P\ndj7mGPjTn8r050svhb/7O9hkEzj88DLL6IgjYLPNqq5WkrQ2XV1ddHV1rdG2ZMmSYft9kRXf2atx\nGmgpcExmfrep/WJgcmYevZbtrwduzszTe7XfD5yVmec2tX0MOCoz9+5jX7OA7u7ubmbNmjXET6SB\nWriwXN9y1VXQ3V1CzaGHllBz5JGw5ZZVVyhJGqj58+fT0dEB0JGZ89u578pPA2XmCqAbOLinLSKi\n8X5dbu4+t3mfDX/VaFcN7LADfOAD8KtfwX33lQcp/vGP8Pa3wzbbwMEHw1lnlanQ3i1XksauysNK\nw9nAOyNV1+ZCAAAR8klEQVTibRGxK/AlYBPgYoCIODMivta8QUTsGRF7AZOArRvvd2vqcg7w2og4\nPSJ2aYyqdADnDf/H0WDtsEOZNfTLX5bb+p9zThlp+fCHy1TomTPhPe+BH/3I6dCSNNbU4pqVzLyy\ncU+VTwBTKfdOOSwzH2t0mQbM6LXZzUDPv7dnAccC9wMvauxzbkQcC3yqsfyWcgrozuH8LFp306eX\ne7acfDIsXQrXXw9XXw3f/S6cdx5MnFhGXQ45BA46CPbYo9yoTpK0fqr8mpU68ZqVesuEO+8sweVH\nPyqjMM88U04ZveY1JcAcdBC86EWGF0kaacN5zUotRlakgYiAF7+4LO9/PyxbVgLLT34C110HJ50E\nq1bBC15QwssBB5Rl110NL5I0mhlWNGpNnFhOBR1ySHm/ZAn87GclvPz0p+UxAKtWwfOetzq4HHAA\n7LMPTJhQaemSpEEwrGi9MXlymfJ85JHl/RNPwLx5ZfTll7+ET34Snn4aNtoIOjpKcNl33xJedtjB\n0RdJqivDitZbm29e7tty6KHl/bPPwm23rQ4vV1wB//ZvZd3znlcCzD77rF5mzDDASFIdGFY0Zmyw\nAcyaVZb3vKe0PfpouSHdr35Vlq99rTyQEWDrrVcHl1mzYM89y/Uw4+oy4V+SxgjDisa0bbYpt/s/\n/PDVbQ8/vDrAdHfDBReUUAMwaVKZKv3Sl8JLXrL61bvtStLwMaxIvUyfXpbXv768zywB5vbby2mk\n22+HG2+Er34VVqwofbbddnVw2WOPciO7XXbxWUeS1A6GFWktIkoY2Xbb8rToHitWwG9+szrA3HYb\nXH45PPDA6j7bblumTu+2W3ntWaZP93oYSRoow4o0RBtuuPq+L80P5H7iiRJiFiwozzW6664ynfqC\nC1aPxEyaVELLLrvAjjuWxwn0vG69tUFGkpoZVqQ223zz1RfmNnv22fLAxp4As2AB/Pa35YZ2jzyy\nut+kSWuGl+bX7bbzAl9JY49hRRohG2wAO+1Ulp7rYXo89RT87ndwzz1w772rXy+/HB58sNzcDso9\nYrbfvsxKarVst10Z8ZGk9YlhRaqBSZPKBbovfelz1/3lL7BwYQkv994L999flttvh+9/f/VMJSij\nLtOnl5vc9Q4yPdfdbLGFp5kkjS6GFanmNt64XNuyyy6t1y9bVi7qXbhwdZDpWX7+c3joodUjM1Ae\nU7DddqvDS/PS0z5tWhkJkqQ68I8jaZSbOLH/MLNiRZl6/dBDq5ff/768PvAAzJ1bfv7LX1ZvM24c\nTJ26OrhMm1be9/556tQyPduRGknDybAirec23HD1qaC+ZMIf//jcQPPww+Xi31tvLa+PPLJ6RlOP\niRP7DjM9P0+ZUmY5TZ5ssJE0eIYVSUSUQDFlSnmsQF8y4c9/Xh1cFi167s/z5pWfFy1a8/QTlFNL\nW21VgkvP71vbzz4hW5JhRdKARZRHC2y5ZbnRXX9WriyjNYsWweLFZXnssef+fM895efHHoNnnnnu\nfjbd9LlBZssty8Mne2pptUycODzHQNLIM6xIGhbjx5dnL22zzcD6Z8LTT/cdanqWhQvh5pvh8cfL\nsmxZ6/1NmNB/mOkr7GyxRdnW01VSfRhWJNVCRJnCPWlSmXo9UMuXrw4u/S1/+lO5l01z2/Llrfe5\nwQbl+prNNx/66+abe88bqV0MK5JGtQkT4PnPL8tg9Q46f/oTLFlSHpnwxBOrf+55ffBBuOOONduf\nfbbv/U+cuGaI2WyzsvSEskmTnvu+VVvPe8OPxirDiqQxa12CDpRTV8uXPzfU9PX6xBPlbsW//315\nfeopePLJ1T/3viC5t402GlzA2XRT2GST1Uvv9z1tEyf6GAfVm2FFkoYoovxF3zN9e130BJ/m8NIq\n0LR6/9RT5Z45vfs8/fTaA1CPCRP6DzQDCT09P0+YUI5J82vPz95sUEPh10aSaqA5+Az0ouS1ySwz\nrJYuXb08/XT/7/tqe/jh1n0GE4igXHjdO8D0F27W1jbQ/htv7EXTo5lhRZLWUxHlL+mNNy4znYZD\nZrlRYHOAWb68zNJavnzNn/tr671u8eK172Oweo5F72WjjYa3va91G23k6beBMqxIkoYsovylu9FG\nZdr3SMksj4gYaBjq+fmZZ8p2rZbmdU891fe63stgRpZ622CD1eFlww3Lcez9OtC2wfYf6j7Gj2/f\nf8cBH6eR/5WSJK2biNWnekYyJLWycmXfQWZtQadn3TPPlGXFijVf+2pbunTt/ZrXPfNMCXjtMG5c\nCS3Ny5veBCee2J79t2JYkSRpHYwfv/ri4jpbuXLg4WYgbStWrF523314azesSJI0BowfX5bhet7W\n/PnDs18AL+2RJEm1ZliRJEm1ZliRJEm1ZliRJEm1ZliRJEm1VpuwEhGnRMR9EbEsIuZFxMvW0v/V\nEdEdEcsj4jcRcXyv9cdHxKqIWNl4XRURS4f3U4xNXV1dVZcwKnncBs9jNjQet8HzmNVLLcJKRLwZ\nOAs4A9gbuBWYExFT+ui/A/B94DpgT+Ac4MsR8Ve9ui4BpjUtLxiG8sc8/6ceGo/b4HnMhsbjNnge\ns3qpRVgBZgMXZOYlmXkXcBKwFOjrfnj/APwuM9+fmXdn5heBbzb20ywz87HMfLSxPDZsn0CSJA2L\nysNKRGwIdFBGSYCSMIBrgf362Oz/NNY3m9Oi/6SIWBgRD0TEtyNimO+xJ0mS2q3ysAJMAcYDi3q1\nL6KcumllWh/9N4+IjRvv76aMzBwJHEf5rDdExPR2FC1JkkbGenu7/cycB8zreR8Rc4EFwLso18a0\nMgFgwYIFw17f+mTJkiXMH877LK+nPG6D5zEbGo/b4HnMBq/p786239A/sl2PYRxqAeU00FLgmMz8\nblP7xcDkzDy6xTY/A7oz8/SmtrcDn8vMLfv5XVcCKzLzuD7WHwt8Y4gfRZIkwXGZeVk7d1j5yEpm\nroiIbuBg4LsAERGN9+f2sdlc4PBebYc22luKiHHAS4Cr+ylnDuWU0UJg+QDKlyRJxQRgB8rfpW1V\n+cgKQET8LXAxZRbQTZRZPW8Eds3MxyLiTGB6Zh7f6L8DcDtwPvAVSrD5PPC6zLy20ecjlNNA9wBb\nAO+nXL/S0ZhxJEmSRoHKR1YAMvPKxj1VPgFMBW4BDmuaajwNmNHUf2FEHAF8DjgV+D3w//UElYYt\ngQsb2z4OdAP7GVQkSRpdajGyIkmS1Jc6TF2WJEnqk2FFkiTVmmGlYbAPUhxLIuKMpodB9ix39urz\niYh4OCKWRsSPI2JmVfVWJSJeGRHfjYiHGsfoyBZ9+j1OEbFxRHwxIhZHxJMR8c2I2GbkPsXIWtsx\ni4ivtvju/aBXn7F2zD4QETdFxBMRsSgivhURO7fo53etyUCOm9+3NUXESRFxa0QsaSw3RMRre/UZ\nke+ZYYXBP0hxjPo15eLnnodCvqJnRUT8M/Bu4O+BfYGnKcdvowrqrNKmlIvDTwaeczHYAI/T54Ej\ngGOAVwHTgauGt+xK9XvMGn7Imt+9zl7rx9oxeyXwBeDlwCHAhsA1ETGxp4PftZbWetwa/L6t9iDw\nz8AsymNxfgJ8JyJ2gxH+nmXmmF8oU5zPaXoflBlG76+6tjoslBA3v5/1DwOzm95vDiwD/rbq2is8\nZquAIwdznBrv/wIc3dRnl8a+9q36M1V0zL4K/Fc/24zpY9b4vFMan/cVTW1+14Z23Py+rf24/RE4\nofHziH3PxvzISgztQYpj0U6Nofp7I+LSiJgBEBEvpPzro/n4PQHciMfvfw3wOO1DuZ1Ac5+7gQcY\n28fy1Y1h+7si4vyIeF7Tug48ZltQRqX+BH7XBmGN49bE71sLETEuIt4CbEJ5zt6Ifs9qcZ+VivX3\nIMVdRr6cWpoHvJ3ycMjnAx8Dfh4Re1C+rMngHkQ5Fg3kOE0Fnmn8D99Xn7Hmh5Qh4/uAHYEzgR9E\nxH6Nf1RMYwwfs4gIyjD7LzKz5zoyv2tr0cdxA79vz9H4c34u5e60T1JGSe6OiP0Ywe+ZYUVrlZnN\nt07+dUTcBNwP/C3gTfY0bDLzyqa3d0TE7cC9wKuB6yspql7OB3YHDqi6kFGm5XHz+9bSXcCewGTK\nneUviYhXjXQRY/40ELAYWElJgM2mAo+MfDn1l5lLgN8AMynHKPD4rc1AjtMjwEYRsXk/fca0zLyP\n8v9sz4yDMXvMIuI84HXAqzPzD02r/K71o5/j9hx+3yAzn83M32XmzZn5IcoElNMY4e/ZmA8rmbmC\nciv+g3vaGkOEBwM3VFVXnUXEJMr/vA83/md+hDWP3+aUK+49fg0DPE7dwLO9+uwCbE8/D+kcSyJi\nO2AroOcvmTF5zBp/4R4FvCYzH2he53etb/0dtz76+317rnHAxiP+Pav6yuI6LJTTGUuBtwG7AhdQ\nrnjeuura6rAAn6VMOXsBsD/wY8o5x60a69/fOF6vpzzZ+tvAb4GNqq59hI/TppTh0r0oV7u/t/F+\nxkCPE2V4+j7KsHMH8Evgv6v+bFUcs8a6zzT+8HtB4w+8XwELgA3H8DE7n/K8s1dS/oXas0xo6uN3\nbZDHze9by2P2r43j9QJgD8o1PM8CB43096zyg1GXhXKfh4WUaVdzgX2qrqkuC9BFmcq9jHIV92XA\nC3v1+RhlGttSyuPBZ1ZddwXH6cDGX7grey1fGehxAjam3AtiMeVitv8Etqn6s1VxzCgX9P2I8q+3\n5cDvgH+n1z8ixuAxa3W8VgJv69XP79ogjpvft5bH7MuN47CscVyuoRFURvp75oMMJUlSrY35a1Yk\nSVK9GVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkjWoRcV9EnFp1\nHZKGj2FF0oBFxFcj4r8aP18fEWeP4O8+PiIeb7FqH+DCkapD0sjboOoCJI1tEbFhlqefr7Ur8Jzn\ng2TmH9tflaQ6cWRF0qBFxFcpDyE8LSJWRcTKiNi+sW6PiPhBRDwZEY9ExCURsVXTttdHxBci4nMR\n8Rjl4XFExOyIuC0inoqIByLiixGxSWPdgZSHG05u+n0fbaxb4zRQRMyIiO80fv+SiLgiIrZpWn9G\nRNwcEW9tbPvniOiKiE2b+ryxUcvSiFgcEddExMRhPaiS+mRYkTQUp1KeTn4RMBV4PvBgREwGrgO6\ngVnAYcA2wJW9tn8b8Bdgf+CkRttK4D3A7o31rwE+01h3A/Be4Imm3/dvvYuKiAC+C2xBebT9IcCL\ngMt7dd0ROAp4HXAEJXj9S2Mf0yhPFv8ysGtj3X9RRnYkVcDTQJIGLTOfjIhngKWZ+VhPe0S8G5if\nmR9pansH8EBEzMzMexrNv83Mf+m1z3Ob3j4QER8B/h14d2auiIglpdvq39fCIcCLgR0y8+HG738b\ncEdEdGRmd09ZwPGZubTR5+vAwcBHKEFoPPCtzHyw0f+OgR4bSe3nyIqkdtoTOKhxCubJiHgSWEC5\n1mTHpn7dvTeMiEMi4tqI+H1EPAF8HdgqIiYM4vfvCjzYE1QAMnMB8Gdgt6Z+C3uCSsMfKCNAALdS\nRod+HRFXRsQ7ImKLQdQgqc0MK5LaaRLlNMxLKcGlZ9kJ+HlTv6ebN4qIFwDfA24B3kA5hXRKY/VG\nw1Bn7wt6k8afh5m5KjMPBV5LGVF5D3BXo0ZJFTCsSBqqZyinS5rNp5yGuT8zf9drWdbPvjqAyMx/\nysybGqeLth3A7+ttATAjIv5324jYnXINy6BO5WTm3Mz8OLA3JdwcPZjtJbWPYUXSUC0EXh4RL2ia\n7fNF4HnA5RGxT0S8KCIOi4ivNC5+7cs9wIYRcWpEvDAi/g54V4vfNykiDoqIrVrNzsnMa4FfA9+I\niL0jYl/ga8D1mXnzQD5UROwbER+IiI6ImAEcA0wB7hzI9pLaz7Aiaaj+jTKD507g0YjYPjP/ABxA\n+bNlDnAbcDbweGb23COl1b1SbgNOB94P3A500pid09RnLvAl4ArgUeB9fezvSOBx4GfANZQg9JZB\nfK4ngFcBVwN3A58ATs/MawaxD0ltFKv//JAkSaofR1YkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYk\nSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKtGVYkSVKt/f9Aphi/+Q4o+AAA\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10e2a2e80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "from mlxtend.classifier import SoftmaxRegression\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "lr = SoftmaxRegression(eta=0.01, epochs=300, minibatches=len(y), random_seed=1)\n",
    "lr.fit(X, y)\n",
    "\n",
    "plot_decision_regions(X, y, clf=lr)\n",
    "plt.title('Softmax Regression - Stochastic Gradient Descent')\n",
    "plt.show()\n",
    "\n",
    "plt.plot(range(len(lr.cost_)), lr.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## SoftmaxRegression\n",
      "\n",
      "*SoftmaxRegression(eta=0.01, epochs=50, l2=0.0, minibatches=1, n_classes=None, random_seed=None, print_progress=0)*\n",
      "\n",
      "Softmax regression classifier.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `eta` : float (default: 0.01)\n",
      "\n",
      "    Learning rate (between 0.0 and 1.0)\n",
      "\n",
      "- `epochs` : int (default: 50)\n",
      "\n",
      "    Passes over the training dataset.\n",
      "    Prior to each epoch, the dataset is shuffled\n",
      "    if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n",
      "\n",
      "- `l2` : float\n",
      "\n",
      "    Regularization parameter for L2 regularization.\n",
      "    No regularization if l2=0.0.\n",
      "\n",
      "- `minibatches` : int (default: 1)\n",
      "\n",
      "    The number of minibatches for gradient-based optimization.\n",
      "    If 1: Gradient Descent learning\n",
      "    If len(y): Stochastic Gradient Descent (SGD) online learning\n",
      "    If 1 < minibatches < len(y): SGD Minibatch learning\n",
      "\n",
      "- `n_classes` : int (default: None)\n",
      "\n",
      "    A positive integer to declare the number of class labels\n",
      "    if not all class labels are present in a partial training set.\n",
      "    Gets the number of class labels automatically if None.\n",
      "\n",
      "- `random_seed` : int (default: None)\n",
      "\n",
      "    Set random state for shuffling and initializing the weights.\n",
      "\n",
      "- `print_progress` : int (default: 0)\n",
      "\n",
      "    Prints progress in fitting to stderr.\n",
      "    0: No output\n",
      "    1: Epochs elapsed and cost\n",
      "    2: 1 plus time elapsed\n",
      "    3: 2 plus estimated time until completion\n",
      "\n",
      "**Attributes**\n",
      "\n",
      "- `w_` : 2d-array, shape={n_features, 1}\n",
      "\n",
      "    Model weights after fitting.\n",
      "\n",
      "- `b_` : 1d-array, shape={1,}\n",
      "\n",
      "    Bias unit after fitting.\n",
      "\n",
      "- `cost_` : list\n",
      "\n",
      "    List of floats, the average cross_entropy for each epoch.\n",
      "\n",
      "**Examples**\n",
      "\n",
      "For usage examples, please see\n",
      "    [http://rasbt.github.io/mlxtend/user_guide/classifier/SoftmaxRegression/](http://rasbt.github.io/mlxtend/user_guide/classifier/SoftmaxRegression/)\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X, y, init_params=True)*\n",
      "\n",
      "Learn model from training data.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "- `init_params` : bool (default: True)\n",
      "\n",
      "    Re-initializes model parameters prior to fitting.\n",
      "    Set False to continue training with weights from\n",
      "    a previous model fitting.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict(X)*\n",
      "\n",
      "Predict targets from X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `target_values` : array-like, shape = [n_samples]\n",
      "\n",
      "    Predicted target values.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict_proba(X)*\n",
      "\n",
      "Predict class probabilities of X from the net input.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `Class probabilties` : array-like, shape= [n_samples, n_classes]\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*score(X, y)*\n",
      "\n",
      "Compute the prediction accuracy\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values (true class labels).\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `acc` : float\n",
      "\n",
      "    The prediction accuracy as a float\n",
      "    between 0.0 and 1.0 (perfect score).\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.classifier/SoftmaxRegression.md', 'r') as f:\n",
    "    print(f.read())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
